// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import axios from "axios";
// 绑定到原型
Vue.prototype.$axios = axios;
// 设置基准路径
axios.defaults.baseURL="http://liangwei.tech:3000"


// 如果我想设置一个公共函数,在组件内可以直接用 this.xxx 调用
// 那么可以使用 Vue.prototype 来进行定义
Vue.prototype.$fixImgUrl = function (url) {
  // 如果这个 url 没有 http 这个部分
  // 我就要默认带上 axios 的基准路径
  var res = "";
  if (url.indexOf('http')<0) {
    res = axios.defaults.baseURL + url
  }else {
    res = url
  }
  return res;
}
// 设置路由守卫
router.beforeEach((to,from,next)=>{
    var token = localStorage.getItem('token');
    // 设置一个数组，用来存放需要权限的页面，才不会使得页面臃肿
    const pagesNeedAuth =  [
      '/prifile'
    ]
    // 当to.path存在于数组中
    if(pagesNeedAuth.indexOf(to.path)>0){
      if(token){
        next();
      }else{
        router.push({
          path:'/login'
        })
      }
    }else{
      // 跳转到其他页面
      next()
    }
})

// 设置一个全局的拦截器拦截错误，才不用每个页面去处理错误
// use是用来注册

// 让提示框可以在全局使用
import { Toast } from 'vant'
axios.interceptors.response.use((res)=>{
  const { message,statusCode} = res.data;
  if(message && statusCode == 401){
    Toast.fail(message)
  }
  if(message && statusCode == 400){
    Toast.fail(message)
  }
  if (message == "用户信息验证失败") {
    // 没有权限
    router.push('./login')
  }
  return res
})

//引入组件库,只能在组件使用
import Vant from 'vant';
//注册组件库
Vue.use(Vant);
//引入组件样式文件
import 'vant/lib/index.css';
Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})
